Published on

Mobile Hacking - Bypass SSL Pinning Android apps with Frida & Objection

Authors
  • avatar
    Name
    Alvin Dhiyaul H
    Twitter
cover

Apa itu SSL Pinning?

SSL pinning adalah teknik keamanan yang mengharuskan aplikasi memverifikasi sertifikat server terhadap sertifikat yang telah "dipin" (disematkan) di dalam aplikasi. Tujuannya adalah untuk mencegah serangan man-in-the-middle (MitM) dengan memastikan aplikasi hanya berkomunikasi dengan server yang sah.

Alat yang Digunakan

Frida: Toolkit instrumentasi dinamis yang memungkinkan injeksi kode ke dalam aplikasi yang sedang berjalan untuk memodifikasi perilakunya tanpa mengubah kode sumber.

Objection: Toolkit eksplorasi runtime untuk aplikasi mobile yang memanfaatkan Frida untuk melakukan analisis dan manipulasi aplikasi secara dinamis.

Requirement

Install Frida CLI

pip install frida-tools

Install Objection

pip install objection

Install Frida Server In Android Emulator

Kita perlu menginstall frida server pada emulator android supaya dapat terhubung dengan frida cli yang sudah kita install sebelumnya, dan untuk melakukan instalasi frida server kita harus mengetahui architecture cpu pada android device yang kita gunakan.

Check CPU Device architecture

adb shell getprop ro.product.cpu.abilist
Sebagai contoh disini saya menggunakan cpu type arm-64 image

Sehingga kita dapat menggunakan frida server dengan versi frida-server-17.0.4-android-arm64.xz. Atau kita dapat menggunakan versi yang lain sesuai dengan CPU type yang kita sedang gunakan Download Frida Server.

Uncommpress frida-server-17.0.4-android-arm64.xz

Selanjutnya kita dapat mengkompresi file frida serve yang telah kita download sebelumnya.

unxz frida-server-17.0.4-android-arm64.xz
image

Push & Running Frida Server

Kemudian kita perlu menaruh file frida server ke direktori /data/local/tmp/ di android dan kemudian merunning nya.

$ adb root
$ adb push frida-server-17.0.4-android-arm64 /data/local/tmp/
$ adb shell "chmod 755 /data/local/tmp/frida-server-17.0.4-android-arm64"
$ adb shell "/data/local/tmp/frida-server-17.0.4-android-arm64 &"
image

Pada tahap ini kita telah berhasil menginstal & menjalankan frida server dan dapat di cek jika frida server sudah berjalan dengan frida CLI

frida-ps -Uai

Tetapi ketika muncul pesan error seperti ini ketika menjalankan frida server:

Unable to load SELinux policy from the kernel: Failed to open file ?/sys/fs/selinux/policy?: Permission denied

kita dapat memanfaatkan script berikut untuk disable SELinux dan kemudian auto running frida server Download Script Disable SELinux

Bypass SSL Pinnning with Objection

Setelah kita berhasil melakukan instalasi frida server selanjutnya kita dapat melakukan tahap selanjutnya yaitu bypass ssl pinning with objection, karena objection ini perlu frida server untuk dapat terkoneksi ke device android kita. Disini saya menggunakan sebuah lab aplikasi mobile yang memang sudah di setting untuk percobaan peretasan secara etis yaitu Vulnerable Bank yang dapat di download langsung dari repositori github Commando-X vuln-bank

image

NOTE

Video diatas adalah posisi dimana aplikasi Vulnerable bank masih terdapat proteksi SSL Pinning sehingga kita tidak dapat mengintercept traffict request yang sedang berjalan dan muncul pesan error Network Error

Kemudian untuk melakukan Bypass SSL Pinning kita perlu mengetahui Identifier/package id dari aplikasi yang akan kita Bypass SSL Pinning, kita dapat menggunakan frida CLI untuk mengetahui nya, dengan command:

frida-ps -Uai

Dari hasil identifier kita dapat mengetahui bahwasanya package name nya adalah com.vulnerablebankapp

alvin@0xOff ~ % frida-ps -Uai
 PID  Name               Identifier
----  -----------------  ---------------------------------------
9126  Photos             com.google.android.apps.photos
9742  VulnerableBankApp  com.vulnerablebankapp
   -  Calendar           com.google.android.calendar
   -  Camera             com.android.camera2

Kemudian kita dapat menggunkan Objection untuk menjalankan aplikasi yang akan kita bypass ssl pinningnya.

objection --gadget <identifier> explore

Lalu ketika aplikasi sudah berjalan dan pada objection kita gunakan argument untuk bypass ssl pinning yaitu android sslpinning disable dan akan muncul logging pada objection bahwasanya ada beberapa function sslpinning yang telah di berhasil di bypass.

Dan selanjutnya kita dapat meng-Intercept request yang sedang berjalan menggunakan Burpsuite.

image

Dan kita telah berhasil melakukan Bypass SSL Pinning android mobile dengan menggunakan Frida & Objection